#include <stdio.h>
#include <string.h>

#include "CSCAN.h"

void ordenar(int arr[5])
{
   int ordenado=0;
   int aux,i,len;

   len = 5;

   while( !ordenado )
   {
      ordenado=1;
      for( i=0; i<len-1; i++ )
      {
         if( arr[i+1]<arr[i] )
         {
            aux=arr[i];
            arr[i]=arr[i+1];
            arr[i+1]=aux;
            ordenado=0;
         }
      }
   }
}

int opuesto(int a)
{
	switch(a)
	{
		case 0:
		return 0;
		case 1:
		return 1;
		case 2:
		return 2;
		case 3:
		return 3;
		case 4:
		return 4;
		case 5:
		return 0;
		case 6:
		return 1;
		case 7:
		return 2;
		case 8:
		return 3;
		case 9:
		return 4;
		default:
		return -1;

	}
}

/*** Le pasas un array con hasta 5 sectores (los no validos van en -1) y te lo devuelve ordenado segun C-SCAN ***/
int ordenarLista(int sectores[5], int actual) {

	int auxSectores[5];
	int a,i;
	int pos = -1;
	int masCercano = -1;

	ordenar(sectores); 


	a=0;
	while(a<5)
	{
		auxSectores[a] = sectores[a];
		a++;
	}

	/*** separo entre la posicion actual ***/
	
	a = 0;
	while(a < 5 )
	{
		if(auxSectores[a]>=actual)
		{
			if(auxSectores[a] < masCercano || masCercano == -1)
			{
				masCercano = auxSectores[a];
				pos = a;
			}
		}

		a++;
	}

	if(pos == -1)
	{
		return 0;
	}

	for(i = 0; i<5; i++)
	{
		sectores[i] = -1;
	}

	a=0;
	for(i = 0; i<5; i++)
	{
		if(auxSectores[opuesto(pos)] != -1)
		{
			sectores[a] = auxSectores[opuesto(pos)];
			a++;
			
		}
		pos++;
	}

	return 0;

}

/*** Le pasas un array con hasta 5 sectores (los no validos van en -1) y te lo devuelve ordenado segun SCAN ***/

int ordenarLista2(int sectores[5], int actual) { 

	int auxSectores[5];
	int a,i;
	int pos = -1;
	int masCercano = -1;

	ordenar(sectores);   /*Ordena el array de sectores de menor a mayor*/

	
	/*Copia el array de sectores en auxsectores*/
	a=0;
	while(a<5)
	{
		auxSectores[a] = sectores[a];
		a++;
	}

	a = 0;
	
	while(a < 5 )
	{
		if(auxSectores[a]>=actual)
		{
			if(auxSectores[a] < masCercano || masCercano == -1)
			{
				masCercano = auxSectores[a];
				pos = a;
			}
		}

		a++;
	}

	if(pos == -1)
	{
		return 0;
	}

	for(i = 0; i<5; i++)
	{
		sectores[i] = -1;
	}

	a=0;
	
	for(i = pos; i<5; i++)
	{
		sectores[a] = auxSectores[i];
		a++;
	}

	for(i = (pos-1);i>=0; i--)
	{
		sectores[a] = auxSectores[i];
		a++;
	}
	
	
	return 0;

}